package com.cyh.forum.services;

import com.cyh.forum.model.Article;
import com.cyh.forum.model.User;
import org.apache.ibatis.annotations.Param;
import org.springframework.transaction.annotation.Transactional;

import java.time.Year;
import java.util.List;

public interface IArticleService {

    /**
     *      新增帖子
     * @param article  帖子对象
     */
    @Transactional   //  对其进行事务管理
    void create(Article article);

    /**
     *      查询首页所有帖子列表
     * @return
     */
    List<Article> selectAll();



    /**
     *      根据版块ID  查询所有帖子列表
     * @return
     */
    List<Article> selectByBoardId(Long boardId);

    /**
     *  根据userId 查询用户发帖列表
     * @param userId    用户ID
     * @return  帖子列表
     */
    List<Article> selectByUserId(@Param("userId") Long userId);

    /**
     *      根据帖子ID查询所有帖子信息
     * @param id    帖子ID
     * @return  返回帖子所有字段
     */
    Article selectById(Long id);

    /**
     *  查询帖子详情
     * @param id    帖子id
     * @return  帖子详情
     */
    Article selectDetailById(@Param("id") Long id);


    /**
     *      编辑帖子
     * @param id    帖子ID
     * @param title     帖子标题
     * @param content   帖子正文
     */
    void modify(Long id, String title, String content);


    /**
     *      实现点赞操作
     * @param id    帖子id
     */
    void thumbsUpById(Long id);

    /**
     *      删除帖子
     * @param id    帖子ID
     */
    @Transactional //进行事务管理
    void deleteById(Long id);


    /**
     *      让帖子回复数 加1
     * @param id    帖子ID
     * @return
     */
    void addOneReplyCountById(Long id);



}
